package utils

import (
	"fmt"
	"strings"
)

// SuppleLeft 对长度不足n的数字前面补0
func SuppleLeft(val any, length int, filler rune) string {
	return Supple(val, length, filler, "l")
}

// SuppleRight 对长度不足n的数字后面补0
func SuppleRight(val any, length int, filler rune) string {
	return Supple(val, length, filler, "r")
}

// Supple 对长度不足n的字符串用指定字符补全，direction: "l" 左侧, "r" 右侧
func Supple(val any, length int, filler rune, direction string) string {
	if length < 0 {
		return fmt.Sprintf("%v", val) // 如果 length 为负数，直接返回原字符串
	}
	s := fmt.Sprintf("%v", val)
	if len(s) >= length {
		return s
	}

	padding := strings.Repeat(string(filler), length-len(s))
	if direction == "l" {
		return padding + s
	} else if direction == "r" {
		return s + padding
	}
	return s // 如果 direction 不是 'l' 或 'r'，直接返回原字符串
}
